package cn.mygweb.admin.modules.sys.service;

import java.util.List;

import org.springframework.ui.ModelMap;

import cn.mygweb.admin.modules.sys.pojo.User;
import io.lettuce.core.dynamic.annotation.Param;

/** 
* <p>Title: SysUserService.java</p>
* <p>Description: 系统用户service接口</p>  
* @author gxb 
* @date 2019年6月1日 
* <p>Copyright: Copyright (c) 2019</p>
* <p>Company: www.mygweb.cn</p> 
*/
public interface UserService {

	/**
	 * <p>Title: findByUsername</p>
	 * <p>Description: 通过用户名查找用户信息</p>
	 * @param username
	 * @return
	 */
	User findByUsername(String username);
	
	/**
	 * <p>Title: insert</p>
	 * <p>Description: 添加用户信息</p>
	 * @param user
	 */
	void insert(User user);
	
	/**
	 * <p>Title: updateUser</p>
	 * <p>Description: 更新用户信息</p>
	 * @param user
	 */
	void updateUser(User user);
	
	/**
	 * <p>Title: deleteUser</p>
	 * <p>Description: 删除用户信息</p>
	 * @param id
	 */
	void deleteUser(String id);
	
	/**
	 * <p>Title: findById</p>
	 * <p>Description: 通过id查询用户信息</p>
	 * @param id
	 * @return
	 */
	User findById(@Param("id") String id);
	
	/**
	 * <p>Title: queryUserList</p>
	 * <p>Description: 查询所有用户信息</p>
	 * @param user
	 * @return
	 */
	List<User> queryUserList(User user);
	
	/**
	 * <p>Title: queryUserListPaged</p>
	 * <p>Description: 分页查询用户信息</p>
	 * @param user
	 * @return
	 */
	List<User> queryUserListPaged(User user, Integer pageNum, Integer pageSize);
	
	/**
	 * <p>Title: userAlreadyExists</p>
	 * <p>Description: 判断用户是否存在</p>
	 * @param user
	 * @return
	 */
	boolean userAlreadyExists(User user);
	
	/**
	 * <p>Title: queryPermsByUserId</p>
	 * <p>Description: 通过userId查询用户的权限信息</p>
	 * @param userId
	 * @return
	 */
	List<String> queryPermsByUserId(String userId);
	
	/**
	 * <p>Title: getCurrentUser</p>
	 * <p>Description: 获取当前登录的用户信息</p>
	 * @return
	 */
	void setLoginUser(ModelMap model);

	/**
	 * <p>Title: selectCount</p>
	 * <p>Description: 查询信息的总条数</p>
	 * @param user
	 * @return
	 */
	Integer selectCount(User user);
	
}
